package com.shark.uh.utils;

import java.util.Collection;
import java.util.Objects;

public class ValidationUtils {

    private ValidationUtils() {
        // 工具类不可实例化
    }

    // 验证字符串是否为空
    public static boolean isNullOrEmpty(String value) {
        return value == null || value.trim().isEmpty();
    }

    // 验证集合是否为空
    public static boolean isNullOrEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }

    // 验证数字是否在范围内
    public static boolean isInRange(Number value, Number min, Number max) {
        if (value == null) return false;
        return value.doubleValue() >= min.doubleValue() && value.doubleValue() <= max.doubleValue();
    }

    // 验证字符串是否匹配正则表达式
    public static boolean matchesRegex(String value, String regex) {
        if (value == null) return false;
        return value.matches(regex);
    }

    // 验证字符串是否属于指定枚举的名称
    public static <E extends Enum<E>> boolean isEnumName(String value, Class<E> enumClass) {
        if (value == null || enumClass == null) return false;
        for (E enumConstant : enumClass.getEnumConstants()) {
            if (enumConstant.name().equals(value)) {
                return true;
            }
        }
        return false;
    }

    // 验证字符串的长度是否在范围内
    public static boolean isLengthInRange(String value, int min, int max) {
        if (value == null) return false;
        int length = value.length();
        return length >= min && length <= max;
    }

    // 验证电话是否有效
    public static boolean isValidPhoneNumber(String phoneNumber) {
        if (phoneNumber == null || phoneNumber.isEmpty()) {
            return false;
        }
        String regex = "^\\+?[0-9\\-]{10,15}$"; // 支持数字、+ 和 -
        return phoneNumber.matches(regex);
    }

    // 验证邮箱是否有效
    public static boolean isValidEmail(String email) {
        if (email == null || email.isEmpty()) {
            return false;
        }
        String regex = "^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$"; // 邮箱正则表达式
        return email.matches(regex);
    }







    // 验证对象是否不为空（非 null）
    public static boolean isNotNull(Object obj) {
        return Objects.nonNull(obj);
    }


}

